﻿using Microsoft.VisualBasic.FileIO;
using ProyectoDeTesis.Controladores;
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ProyectoDeTesis.Vistas
{
    public partial class CargarCSV : Form
    {
        private VueloController vueloController = new VueloController();

        public CargarCSV()
        {
            InitializeComponent();
        }

        private void BtnCargarArchivo_Click(object sender, EventArgs e)
        {

        }

        private void btnBuscarArchivo_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "|*.csv";

            DialogResult result = openFileDialog.ShowDialog(this);

            if (result == DialogResult.OK)
            {
                tbxRutaArchivo.Text = openFileDialog.FileName;
            }
        }

        private void btnCargarCSV_Click(object sender, EventArgs e)
        {
            try
            {
                dgvResultados.DataSource = GetDataSourceFromCSVFile(tbxRutaArchivo.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Elige un archivo CSV", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private List<ProyectoDeTesis.Vuelo> GetDataSourceFromCSVFile(string nombreArchivo)
        {
            List<ProyectoDeTesis.Vuelo> listaVuelo = new List<ProyectoDeTesis.Vuelo>();

            try
            {
                using (TextFieldParser csvReader = new TextFieldParser(nombreArchivo))
                {
                    csvReader.SetDelimiters(new string[] { "," });
                    csvReader.HasFieldsEnclosedInQuotes = true;

                    string[] colFields = csvReader.ReadFields();

                    while (!csvReader.EndOfData)
                    {
                        string[] fieldData = csvReader.ReadFields();
                        ProyectoDeTesis.Vuelo vuelo = new ProyectoDeTesis.Vuelo();                

                        // número de vuelo
                        vuelo.num_vuelo = fieldData[0];
                        // tipo de vuelo
                        vuelo.tipo_vuelo = fieldData[1];
                        // tipo de avion
                        vuelo.Tipo_avion = fieldData[2];
                        // fecha de salida
                        vuelo.fecha_salida = Convert.ToDateTime(fieldData[3]);
                        // hora de salida
                        vuelo.hora_salida = fieldData[4];
                        // fecha de llegada
                        vuelo.fecha_llegada = Convert.ToDateTime(fieldData[5]);
                        // hora de llegada
                        vuelo.hora_llegada = fieldData[6];
                        // origen
                        vuelo.nombre_origen = fieldData[7];
                        // destino
                        vuelo.nombre_destino = fieldData[8];
                        // aeropuerto
                        vuelo.nombre_aeropuerto = fieldData[9];
                        // pasajeros
                        vuelo.num_pasajeros = Convert.ToInt32(fieldData[10]);
                        // equipajes
                        vuelo.carga = Convert.ToInt32(fieldData[11]);
                        vuelo.aprobado = "No";
                        vuelo.estado = "En Espera";
                        vuelo.fecha_creacion = DateTime.Now;
                        vuelo.fecha_actualizacion = DateTime.Now;

                        listaVuelo.Add(vuelo);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("El archivo no se puede leer:");
                Console.WriteLine(e.Message);
            }

            vueloController.agregarVuelosDeCSV(listaVuelo);

            return listaVuelo;
        }
    }
}
